library(png)
library(readxl)
library(knitr)
library(cowplot)
library(ggplot2)
library(magick)
source('C:/Users/Sylvia/Dropbox (Partners HealthCare)/Sylvia_Romanos/scRNASeq/Code/Functions.R')
Get File Paths
folder_base <- 'C:/Users/Sylvia/Dropbox (Partners HealthCare)/Sylvia_Romanos/scRNASeq/Code/Output/'
filename_sampleParam <- 'C:/Users/Sylvia/Dropbox (Partners HealthCare)/Sylvia_Romanos/scRNASeq/Data/sample_parameters.xlsx'
sampleParam <- read_excel(filename_sampleParam)
filename_metaData <- 'C:/Users/Sylvia/Dropbox (Partners HealthCare)/Sylvia_Romanos/scRNASeq/Data/Dexa_meta.xlsx'
metaData <- read_excel(filename_metaData)
sample_name <- metaData$Sample[31]
filter = TRUE
regress_TF = FALSE
folder_noregress = makeFolders(folder_base,sample_name,filter,regress_TF, FALSE)
regress_TF = TRUE
folder_regress = makeFolders(folder_base,sample_name,filter,regress_TF, FALSE)
#parameters = read.csv(file=paste0(folder_regress,'parameters.csv'), sep=",")
# Load data
filename_metaData <- 'C:/Users/Sylvia/Dropbox (Partners HealthCare)/Sylvia_Romanos/scRNASeq/Data/Dexa_meta.xlsx'
filename_sampleParam <- 'C:/Users/Sylvia/Dropbox (Partners HealthCare)/Sylvia_Romanos/scRNASeq/Data/sample_parameters.xlsx'
metaData <- read_excel(filename_metaData)
sampleParam <- read_excel(filename_sampleParam)
print(parameters)
print(paste0('Sample: ',sample_name))
[1] "Sample: GL1369PB"
print(paste0('Folder Filter: ',folder_regress))
[1] "Folder Filter: C:/Users/Sylvia/Dropbox (Partners HealthCare)/Sylvia_Romanos/scRNASeq/Code/Output/GL1369PB/Filtered/Regress/"
QC
# PCA
pathName_scatter1 <- paste0(folder_noregress,'QC Metrics/scatter.png')
pathName_scatter2 <- paste0(folder_regress,'QC Metrics/scatter.png')
pathName_violin1 <- paste0(folder_noregress,'QC Metrics/violin.png')
pathName_violin2 <- paste0(folder_regress,'QC Metrics/violin.png')
include_graphics((pathName_scatter1))

include_graphics((pathName_violin1))

#include_graphics(c(pathName_violin1,pathName_violin2))
#1 <- ggdraw() + draw_image(pathName_violin1, scale = 1.2)
#p2 <- ggdraw() + draw_image(pathName_violin2, scale = 1.2)
#plot_grid(p1, p2)
PCA
# PCA
PCA_dim<- sampleParam$PCA_dim[sampleParam['Sample'] == sample_name]
print(paste0('PCA_dim: ',PCA_dim))
[1] "PCA_dim: 15"
pathName_filter1 <- paste0(folder_regress,'PCA/Elbow.png')
pathName_filter2 <- paste0(folder_regress,'PCA/DimLoading.png')
pathName_filter3 <- paste0(folder_regress,'PCA/DimHeatMap1_6.png')
pathName_filter4 <- paste0(folder_regress,'PCA/DimHeatMap7_12.png')
pathName_nofilter1 <- paste0(folder_noregress,'PCA/Elbow.png')
pathName_nofilter2 <- paste0(folder_noregress,'PCA/DimLoading.png')
pathName_nofilter3 <- paste0(folder_noregress,'PCA/DimHeatMap1_6.png')
pathName_nofilter4 <- paste0(folder_noregress,'PCA/DimHeatMap7_12.png')
p1 <- ggdraw() + draw_image(pathName_filter2, scale = 1)
p2 <- ggdraw() + draw_image(pathName_nofilter2, scale = 1)
plot_grid(p1, p2)

include_graphics(c(pathName_filter3,pathName_nofilter3))


include_graphics(c(pathName_filter4,pathName_nofilter4))


NA
NA
NA
NA
PCA Individual Plots
pathlist = vector()
for (x in 1:(PCA_dim -1)){
y <- x+1
pathName_nofilter <- paste0(folder_noregress,'PCA/PCA',x,'_',y,'.png')
pathName_filter <- paste0(folder_regress,'PCA/PCA',x,'_',y,'.png')
p1 <- ggdraw() + draw_image(pathName_nofilter, scale = 1)
p2 <- ggdraw() + draw_image(pathName_filter, scale = 1)
print(plot_grid(p1, p2))
}














Cluster Metrics
resolution_val<- sampleParam$resolution_val[sampleParam['Sample'] == sample_name]
print(paste0('Resolution: ',resolution_val))
[1] "Resolution: 1"
pathName_nofilter <- paste0(folder_noregress,paste0('Cluster/ClusterMetrics','.png'))
pathName_filter <- paste0(folder_regress,paste0('Cluster/ClusterMetrics','.png'))
p1 <- ggdraw() + draw_image(pathName_nofilter, scale = 1)
p2 <- ggdraw() + draw_image(pathName_filter, scale = 1)
print(plot_grid(p1, p2))

Cluster with Umap
resolution_val<- sampleParam$resolution_val[sampleParam['Sample'] == sample_name]
print(paste0('Resolution: ',resolution_val))
[1] "Resolution: 1"
pathName1_nofilter <- paste0(folder_noregress,paste0('Cluster/ClusterUmap',resolution_val,'.png'))
pathName1_filter <- paste0(folder_regress,paste0('Cluster/ClusterUmap',resolution_val,'.png'))
pathName2_nofilter <- paste0(folder_noregress,paste0('Cluster/HeatMap',resolution_val,'.png'))
pathName2_filter <- paste0(folder_regress,paste0('Cluster/HeatMap',resolution_val,'.png'))
p1 <- ggdraw() + draw_image(pathName1_nofilter, scale = 1)
p2 <- ggdraw() + draw_image(pathName1_filter, scale = 1)
print(plot_grid(p1, p2))

p1 <- ggdraw() + draw_image(pathName2_nofilter, scale = 1)
p2 <- ggdraw() + draw_image(pathName2_filter, scale = 1)
Error in magick_image_readpath(enc2native(path), density, depth, strip) :
Magick: UnableToOpenBlob `C:\Users\Sylvia\Dropbox (Partners HealthCare)\Sylvia_Romanos\scRNASeq\Code\Output\GL1369PB\Filtered\Regress\Cluster\HeatMap1.png': No such file or directory @ error/blob.c/OpenBlob/2701
Cell Labeling
pathName_nofilter <- paste0(folder_noregress,paste0('Cell Type/'))
cell_images_nofilter<-list.files(pathName_nofilter, pattern = ".png", full.names = TRUE)
pathName_filter <- paste0(folder_regress,paste0('Cell Type/'))
cell_image_filter<-list.files(pathName_filter, pattern = ".png", full.names = TRUE)
for (x in 1:length(cell_images_nofilter)){
p1 <- ggdraw() + draw_image((cell_images_nofilter[x]), scale = 1)
p2 <- ggdraw() + draw_image((cell_image_filter[x]), scale = 1)
print(plot_grid(p1, p2))
#print(include_graphics(x))
}
































NA
NA
LS0tDQp0aXRsZTogIkNvbXBhcmUgUmVncmVzc2lvbiINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCg0KDQpgYGB7cn0NCmxpYnJhcnkocG5nKQ0KbGlicmFyeShyZWFkeGwpDQpsaWJyYXJ5KGtuaXRyKQ0KbGlicmFyeShjb3dwbG90KQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShtYWdpY2spDQpzb3VyY2UoJ0M6L1VzZXJzL1N5bHZpYS9Ecm9wYm94IChQYXJ0bmVycyBIZWFsdGhDYXJlKS9TeWx2aWFfUm9tYW5vcy9zY1JOQVNlcS9Db2RlL0Z1bmN0aW9ucy5SJykNCg0KYGBgDQoNCiMgR2V0IEZpbGUgUGF0aHMNCmBgYHtyLHJlc3VsdHM9ImhpZGUifQ0KZm9sZGVyX2Jhc2UgPC0gJ0M6L1VzZXJzL1N5bHZpYS9Ecm9wYm94IChQYXJ0bmVycyBIZWFsdGhDYXJlKS9TeWx2aWFfUm9tYW5vcy9zY1JOQVNlcS9Db2RlL091dHB1dC8nDQpmaWxlbmFtZV9zYW1wbGVQYXJhbSA8LSAnQzovVXNlcnMvU3lsdmlhL0Ryb3Bib3ggKFBhcnRuZXJzIEhlYWx0aENhcmUpL1N5bHZpYV9Sb21hbm9zL3NjUk5BU2VxL0RhdGEvc2FtcGxlX3BhcmFtZXRlcnMueGxzeCcNCnNhbXBsZVBhcmFtIDwtIHJlYWRfZXhjZWwoZmlsZW5hbWVfc2FtcGxlUGFyYW0pDQpmaWxlbmFtZV9tZXRhRGF0YSA8LSAnQzovVXNlcnMvU3lsdmlhL0Ryb3Bib3ggKFBhcnRuZXJzIEhlYWx0aENhcmUpL1N5bHZpYV9Sb21hbm9zL3NjUk5BU2VxL0RhdGEvRGV4YV9tZXRhLnhsc3gnDQptZXRhRGF0YSA8LSByZWFkX2V4Y2VsKGZpbGVuYW1lX21ldGFEYXRhKQ0KDQoNCnNhbXBsZV9uYW1lIDwtIG1ldGFEYXRhJFNhbXBsZVszMV0NCmZpbHRlciA9IFRSVUUNCg0KcmVncmVzc19URiA9IEZBTFNFDQpmb2xkZXJfbm9yZWdyZXNzID0gbWFrZUZvbGRlcnMoZm9sZGVyX2Jhc2Usc2FtcGxlX25hbWUsZmlsdGVyLHJlZ3Jlc3NfVEYsIEZBTFNFKQ0KcmVncmVzc19URiA9IFRSVUUNCmZvbGRlcl9yZWdyZXNzID0gbWFrZUZvbGRlcnMoZm9sZGVyX2Jhc2Usc2FtcGxlX25hbWUsZmlsdGVyLHJlZ3Jlc3NfVEYsIEZBTFNFKQ0KI3BhcmFtZXRlcnMgPSByZWFkLmNzdihmaWxlPXBhc3RlMChmb2xkZXJfcmVncmVzcywncGFyYW1ldGVycy5jc3YnKSwgc2VwPSIsIikNCg0KIyBMb2FkIGRhdGENCmZpbGVuYW1lX21ldGFEYXRhIDwtICdDOi9Vc2Vycy9TeWx2aWEvRHJvcGJveCAoUGFydG5lcnMgSGVhbHRoQ2FyZSkvU3lsdmlhX1JvbWFub3Mvc2NSTkFTZXEvRGF0YS9EZXhhX21ldGEueGxzeCcNCmZpbGVuYW1lX3NhbXBsZVBhcmFtIDwtICdDOi9Vc2Vycy9TeWx2aWEvRHJvcGJveCAoUGFydG5lcnMgSGVhbHRoQ2FyZSkvU3lsdmlhX1JvbWFub3Mvc2NSTkFTZXEvRGF0YS9zYW1wbGVfcGFyYW1ldGVycy54bHN4Jw0KbWV0YURhdGEgPC0gcmVhZF9leGNlbChmaWxlbmFtZV9tZXRhRGF0YSkNCnNhbXBsZVBhcmFtIDwtIHJlYWRfZXhjZWwoZmlsZW5hbWVfc2FtcGxlUGFyYW0pDQoNCiAgICANCmBgYA0KDQpgYGB7cn0NCnByaW50KHBhcmFtZXRlcnMpDQpgYGANCg0KYGBge3J9DQpwcmludChwYXN0ZTAoJ1NhbXBsZTogJyxzYW1wbGVfbmFtZSkpDQpwcmludChwYXN0ZTAoJ0ZvbGRlciBGaWx0ZXI6ICcsZm9sZGVyX3JlZ3Jlc3MpKQ0KYGBgDQoNCiMgUUMNCg0KYGBge3J9DQoNCiMgUENBDQpwYXRoTmFtZV9zY2F0dGVyMSA8LSBwYXN0ZTAoZm9sZGVyX25vcmVncmVzcywnUUMgTWV0cmljcy9zY2F0dGVyLnBuZycpDQpwYXRoTmFtZV9zY2F0dGVyMiA8LSBwYXN0ZTAoZm9sZGVyX3JlZ3Jlc3MsJ1FDIE1ldHJpY3Mvc2NhdHRlci5wbmcnKQ0KDQpwYXRoTmFtZV92aW9saW4xIDwtIHBhc3RlMChmb2xkZXJfbm9yZWdyZXNzLCdRQyBNZXRyaWNzL3Zpb2xpbi5wbmcnKQ0KcGF0aE5hbWVfdmlvbGluMiA8LSBwYXN0ZTAoZm9sZGVyX3JlZ3Jlc3MsJ1FDIE1ldHJpY3MvdmlvbGluLnBuZycpDQoNCmluY2x1ZGVfZ3JhcGhpY3MoKHBhdGhOYW1lX3NjYXR0ZXIxKSkNCmluY2x1ZGVfZ3JhcGhpY3MoKHBhdGhOYW1lX3Zpb2xpbjEpKQ0KI2luY2x1ZGVfZ3JhcGhpY3MoYyhwYXRoTmFtZV92aW9saW4xLHBhdGhOYW1lX3Zpb2xpbjIpKQ0KDQojMSA8LSBnZ2RyYXcoKSArIGRyYXdfaW1hZ2UocGF0aE5hbWVfdmlvbGluMSwgc2NhbGUgPSAxLjIpDQojcDIgPC0gZ2dkcmF3KCkgKyBkcmF3X2ltYWdlKHBhdGhOYW1lX3Zpb2xpbjIsIHNjYWxlID0gMS4yKQ0KI3Bsb3RfZ3JpZChwMSwgcDIpDQoNCmBgYA0KDQojIFBDQSANCg0KYGBge3J9DQojIFBDQQ0KUENBX2RpbTwtIHNhbXBsZVBhcmFtJFBDQV9kaW1bc2FtcGxlUGFyYW1bJ1NhbXBsZSddID09IHNhbXBsZV9uYW1lXQ0KcHJpbnQocGFzdGUwKCdQQ0FfZGltOiAnLFBDQV9kaW0pKQ0KDQpwYXRoTmFtZV9maWx0ZXIxIDwtIHBhc3RlMChmb2xkZXJfcmVncmVzcywnUENBL0VsYm93LnBuZycpDQpwYXRoTmFtZV9maWx0ZXIyIDwtIHBhc3RlMChmb2xkZXJfcmVncmVzcywnUENBL0RpbUxvYWRpbmcucG5nJykNCnBhdGhOYW1lX2ZpbHRlcjMgPC0gcGFzdGUwKGZvbGRlcl9yZWdyZXNzLCdQQ0EvRGltSGVhdE1hcDFfNi5wbmcnKQ0KcGF0aE5hbWVfZmlsdGVyNCA8LSBwYXN0ZTAoZm9sZGVyX3JlZ3Jlc3MsJ1BDQS9EaW1IZWF0TWFwN18xMi5wbmcnKQ0KDQpwYXRoTmFtZV9ub2ZpbHRlcjEgPC0gcGFzdGUwKGZvbGRlcl9ub3JlZ3Jlc3MsJ1BDQS9FbGJvdy5wbmcnKQ0KcGF0aE5hbWVfbm9maWx0ZXIyIDwtIHBhc3RlMChmb2xkZXJfbm9yZWdyZXNzLCdQQ0EvRGltTG9hZGluZy5wbmcnKQ0KcGF0aE5hbWVfbm9maWx0ZXIzIDwtIHBhc3RlMChmb2xkZXJfbm9yZWdyZXNzLCdQQ0EvRGltSGVhdE1hcDFfNi5wbmcnKQ0KcGF0aE5hbWVfbm9maWx0ZXI0IDwtIHBhc3RlMChmb2xkZXJfbm9yZWdyZXNzLCdQQ0EvRGltSGVhdE1hcDdfMTIucG5nJykNCg0KcDEgPC0gZ2dkcmF3KCkgKyBkcmF3X2ltYWdlKHBhdGhOYW1lX2ZpbHRlcjIsIHNjYWxlID0gMSkNCnAyIDwtIGdnZHJhdygpICsgZHJhd19pbWFnZShwYXRoTmFtZV9ub2ZpbHRlcjIsIHNjYWxlID0gMSkNCnBsb3RfZ3JpZChwMSwgcDIpDQoNCmluY2x1ZGVfZ3JhcGhpY3MoYyhwYXRoTmFtZV9maWx0ZXIzLHBhdGhOYW1lX25vZmlsdGVyMykpDQoNCmluY2x1ZGVfZ3JhcGhpY3MoYyhwYXRoTmFtZV9maWx0ZXI0LHBhdGhOYW1lX25vZmlsdGVyNCkpDQoNCg0KDQogDQpgYGANCg0KIyBQQ0EgSW5kaXZpZHVhbCBQbG90cw0KDQpgYGB7cn0NCnBhdGhsaXN0ID0gIHZlY3RvcigpDQpmb3IgKHggaW4gMTooUENBX2RpbSAtMSkpew0KICB5IDwtIHgrMQ0KICBwYXRoTmFtZV9ub2ZpbHRlciA8LSBwYXN0ZTAoZm9sZGVyX25vcmVncmVzcywnUENBL1BDQScseCwnXycseSwnLnBuZycpDQogIHBhdGhOYW1lX2ZpbHRlciA8LSBwYXN0ZTAoZm9sZGVyX3JlZ3Jlc3MsJ1BDQS9QQ0EnLHgsJ18nLHksJy5wbmcnKQ0KDQogIHAxIDwtIGdnZHJhdygpICsgZHJhd19pbWFnZShwYXRoTmFtZV9ub2ZpbHRlciwgc2NhbGUgPSAxKQ0KICBwMiA8LSBnZ2RyYXcoKSArIGRyYXdfaW1hZ2UocGF0aE5hbWVfZmlsdGVyLCBzY2FsZSA9IDEpDQogIHByaW50KHBsb3RfZ3JpZChwMSwgcDIpKQ0KfQ0KDQpgYGANCiMgQ2x1c3RlciBNZXRyaWNzDQoNCmBgYHtyfQ0KcmVzb2x1dGlvbl92YWw8LSBzYW1wbGVQYXJhbSRyZXNvbHV0aW9uX3ZhbFtzYW1wbGVQYXJhbVsnU2FtcGxlJ10gPT0gc2FtcGxlX25hbWVdDQpwcmludChwYXN0ZTAoJ1Jlc29sdXRpb246ICcscmVzb2x1dGlvbl92YWwpKQ0KDQpwYXRoTmFtZV9ub2ZpbHRlciA8LSBwYXN0ZTAoZm9sZGVyX25vcmVncmVzcyxwYXN0ZTAoJ0NsdXN0ZXIvQ2x1c3Rlck1ldHJpY3MnLCcucG5nJykpDQpwYXRoTmFtZV9maWx0ZXIgPC0gcGFzdGUwKGZvbGRlcl9yZWdyZXNzLHBhc3RlMCgnQ2x1c3Rlci9DbHVzdGVyTWV0cmljcycsJy5wbmcnKSkNCg0KcDEgPC0gZ2dkcmF3KCkgKyBkcmF3X2ltYWdlKHBhdGhOYW1lX25vZmlsdGVyLCBzY2FsZSA9IDEpDQpwMiA8LSBnZ2RyYXcoKSArIGRyYXdfaW1hZ2UocGF0aE5hbWVfZmlsdGVyLCBzY2FsZSA9IDEpDQpwcmludChwbG90X2dyaWQocDEsIHAyKSkNCg0KYGBgDQoNCiMgQ2x1c3RlciB3aXRoIFVtYXANCg0KYGBge3J9DQpyZXNvbHV0aW9uX3ZhbDwtIHNhbXBsZVBhcmFtJHJlc29sdXRpb25fdmFsW3NhbXBsZVBhcmFtWydTYW1wbGUnXSA9PSBzYW1wbGVfbmFtZV0NCnByaW50KHBhc3RlMCgnUmVzb2x1dGlvbjogJyxyZXNvbHV0aW9uX3ZhbCkpDQoNCnBhdGhOYW1lMV9ub2ZpbHRlciA8LSBwYXN0ZTAoZm9sZGVyX25vcmVncmVzcyxwYXN0ZTAoJ0NsdXN0ZXIvQ2x1c3RlclVtYXAnLHJlc29sdXRpb25fdmFsLCcucG5nJykpDQpwYXRoTmFtZTFfZmlsdGVyIDwtIHBhc3RlMChmb2xkZXJfcmVncmVzcyxwYXN0ZTAoJ0NsdXN0ZXIvQ2x1c3RlclVtYXAnLHJlc29sdXRpb25fdmFsLCcucG5nJykpDQoNCnBhdGhOYW1lMl9ub2ZpbHRlciA8LSBwYXN0ZTAoZm9sZGVyX25vcmVncmVzcyxwYXN0ZTAoJ0NsdXN0ZXIvSGVhdE1hcCcscmVzb2x1dGlvbl92YWwsJy5wbmcnKSkNCnBhdGhOYW1lMl9maWx0ZXIgPC0gcGFzdGUwKGZvbGRlcl9yZWdyZXNzLHBhc3RlMCgnQ2x1c3Rlci9IZWF0TWFwJyxyZXNvbHV0aW9uX3ZhbCwnLnBuZycpKQ0KDQoNCnAxIDwtIGdnZHJhdygpICsgZHJhd19pbWFnZShwYXRoTmFtZTFfbm9maWx0ZXIsIHNjYWxlID0gMSkNCnAyIDwtIGdnZHJhdygpICsgZHJhd19pbWFnZShwYXRoTmFtZTFfZmlsdGVyLCBzY2FsZSA9IDEpDQpwcmludChwbG90X2dyaWQocDEsIHAyKSkNCg0KcDEgPC0gZ2dkcmF3KCkgKyBkcmF3X2ltYWdlKHBhdGhOYW1lMl9ub2ZpbHRlciwgc2NhbGUgPSAxKQ0KcDIgPC0gZ2dkcmF3KCkgKyBkcmF3X2ltYWdlKHBhdGhOYW1lMl9maWx0ZXIsIHNjYWxlID0gMSkNCnByaW50KHBsb3RfZ3JpZChwMSwgcDIpKQ0KDQpgYGANCg0KIyBDZWxsIExhYmVsaW5nDQpgYGB7cn0NCg0KcGF0aE5hbWVfbm9maWx0ZXIgPC0gcGFzdGUwKGZvbGRlcl9ub3JlZ3Jlc3MscGFzdGUwKCdDZWxsIFR5cGUvJykpDQpjZWxsX2ltYWdlc19ub2ZpbHRlcjwtbGlzdC5maWxlcyhwYXRoTmFtZV9ub2ZpbHRlciwgcGF0dGVybiA9ICIucG5nIiwgZnVsbC5uYW1lcyA9IFRSVUUpDQoNCnBhdGhOYW1lX2ZpbHRlciA8LSBwYXN0ZTAoZm9sZGVyX3JlZ3Jlc3MscGFzdGUwKCdDZWxsIFR5cGUvJykpDQpjZWxsX2ltYWdlX2ZpbHRlcjwtbGlzdC5maWxlcyhwYXRoTmFtZV9maWx0ZXIsIHBhdHRlcm4gPSAiLnBuZyIsIGZ1bGwubmFtZXMgPSBUUlVFKQ0KDQoNCmZvciAoeCBpbiAxOmxlbmd0aChjZWxsX2ltYWdlc19ub2ZpbHRlcikpew0KICBwMSA8LSBnZ2RyYXcoKSArIGRyYXdfaW1hZ2UoKGNlbGxfaW1hZ2VzX25vZmlsdGVyW3hdKSwgc2NhbGUgPSAxKQ0KICBwMiA8LSBnZ2RyYXcoKSArIGRyYXdfaW1hZ2UoKGNlbGxfaW1hZ2VfZmlsdGVyW3hdKSwgc2NhbGUgPSAxKQ0KICBwcmludChwbG90X2dyaWQocDEsIHAyKSkNCg0KICAjcHJpbnQoaW5jbHVkZV9ncmFwaGljcyh4KSkNCn0NCg0KDQpgYGA=